package zzuli.edu.cn.controller;

import io.swagger.annotations.*;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import zzuli.edu.cn.dao.pojo.Student;

@Api(value = "@ApiResponses 注解和 @ApiResponse 注解测试", tags = "@ApiResponses 注解和 @ApiResponse 注解测试")
@RestController
public class Swagger2Controller5 {

    /**
     * @ApiResponse 注解可以作用在类、接口和方法上，作用为: 对请求的返回结果进行说明
     * 当此注解作用在方法上时，表示的是对此方法的返回结果进行说明
     * 当此注解作用在方法类或接口上时，表示的是对此类或接口中所有方法的返回结果进行说明
     *
     * code: 响应的HTTP状态码
     * response: 响应的对象
     * message: 响应的描述信息
     *
     * 注意：@ApiResponse 注解不能单独使用，单独使用时swagger不会解析，必须和 @ApiResponses 注解一起搭配使用
     * 即使是单个 @ApiResponse 也需要和  @ApiResponses 注解一起使用
     *
     * @ApiResponses 是多个@ApiResponse 注解的集合
     *
     */
    @ApiOperation(value = "@ApiResponses 和 @ApiResponse 测试", notes = "此方法用于@ApiResponses 和 @ApiResponse 测试")
    @PostMapping("/apiResponse")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "name", value = "姓名", required = true, paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "age",  value = "年龄", required = true, paramType = "query", dataType = "int"),
            @ApiImplicitParam(name = "sex",  value = "性别", required = true, paramType = "query", dataType = "String")
    })
    @ApiResponses(value = {
            @ApiResponse(code = 200, response = Student.class, message = "创建学生对象返回结果")
    })
    public Student createStudent(String name, int age, String sex) {
        return new Student(name, age, sex);
    }

}
